package kr.hkit.powerjava.algorithm;

import java.util.ArrayList;

public class Stack2 {
	private Item top = null;
	private ArrayList<Item> listStack;

	public Stack2() {
		listStack = new ArrayList<Item>();
	}

	public void push(Item item) {//Array가 아니므로 쭉쭉 늘어난다
		item.setList(top);//top은 이전의 item을 가르키고 있다
						//현재의 item의 list필드에 이전의 item을 넣음
		listStack.add(item);//add: arraylist에 추가시 사용 메소드
		top = item;//top을 현재의 item으로 옮김
	}

	public void pop() {
		if (listStack.size() > 0) {//size가 0보다 크다는 Empty가 아님을 의미
			top = top.getList(); //현재 item의 list속에 들은 정보는 이전의 item
								//삭제하면 이전의 item이 최신의 item이므로 top값을 변경
			listStack.remove(listStack.size()-1);//삭제
		} else {//if문을 통과하지 못했다는 것은 비었음을 의미
			System.out.println("Stack is Empty");

		}
	}

	public void prnStack() {
		System.out.print("{ ");
		for (Item a : listStack) {
			System.out.print(a.getItem() + " ");
		}
		System.out.print(" }");
	}

	/*
	 * 선생님이 하신거: Item top = null
	 * 
	 * push(Item i) i.setLink(top) top = i;
	 * 
	 * pop Item i; i = top; top = top.getLink(); return i;
	 * 
	 * prn Item temp = top; while(temp != null) { syso(temp.getData) temp =
	 * temp.getLink
	 */
}
